package marina;

public class J14Overloading {
	//메서드 다중 정의 overloading
	// - 메서드 이름은 동일
	// - 메서드의 인수 목록 중 인수의 자료형이 다름
	// - 메서드의 인수 목록 중 인수의 갯수가 다름
	// - 단, 메서드의 반환형은 다중 정의와 관련 없음
	
	//계산기 프로그램의 사칙 연산을 메서드로 정의
	//plus,minus,multiply,divide
	public int plus(int x, int y){
		return x + y;
	}
	// 메서드 다중 정의를 도입하지 않을 경우 메서드의 기능이 같음에도 불구하고 메서드의 이름은 각각 다르게 정의해야함.
	// => 메서드 이름을 외우기가 불편함.
	/*public float plusFloat(float x, float y){
		return x + y;
	}
	
	public double plusDouble(double x, double y){
		return x + y;
	}*/
	// 메서드 다중 정의를 도입
	// 증명1. 인수의 자료형이 다름
	public float plus(float x, float y){
		return x + y;
	}
	public double plus(double x, double y){
		return x + y;
	}
	// 증명2. 인수의 갯수가 다름 
	public double plus(double x, double y, double z){
		return x + y;
	}
	// 증명3. 리턴 타입이 다름 (다중 정의와 상관없음)
	public int plus(long x, long y){
		return (int)x + (int)y;
	}
	
}
